package org.rbac.action;

import org.rbac.serv.UserServices;
import org.rbac.vo.ActionReturn;
import org.rbac.vo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

/**
 * 用户控制器
 * 
 * <pre>
 * 项目名称：rbac
 * 类名称：UserAction
 * 类描述：用户控制器
 * 创建人：唐家林(tjl)
 * 创建时间：2014-9-25 下午4:50:01
 * 修改人：
 * 修改时间：
 * 修改备注：
 * @version
 * </pre>
 */
@Controller
@RequestMapping(value = "/user")
public class UserAction {

	@Autowired
	private UserServices userServ;

	/**
	 * 进入角色列表
	 * 
	 * @return 返回跳转模型
	 */
	@RequestMapping(value = "/list")
	public ModelAndView user() {
		ModelAndView mav = new ModelAndView();
		mav.setViewName("/rbac/user");
		return mav;
	}

	/**
	 * 修改用户信息
	 * 
	 * @param oldPwd
	 *            旧密码
	 * @param u
	 *            操作的对象数据
	 * @return 返回操作结果
	 */
	@RequestMapping(value = "/editInfo")
	@ResponseBody
	public String editInfo(String oldPwd, User u) {
		ActionReturn ar = new ActionReturn();
		try {
			// 判断旧密码是否为空
			if (null == oldPwd || oldPwd.isEmpty() 
					|| null == u.getUPwd() || u.getUPwd().isEmpty()) {
				ar.setStatus(false);
				ar.setMsg("原密码输入错误");
				return ar.toString();
			}
			
			User old = userServ.login(u.getUAccount(), oldPwd);
			if ( null == old || old.getId() != u.getId()) {
				ar.setStatus(false);
				ar.setMsg("原密码输入错误");
				return ar.toString();
			}
			
			old.setUPwd(u.getUPwd());
			old.setUMail(u.getUMail());
			old.setUMobile(u.getUMobile());
			userServ.editUser(old);
			
			ar.setStatus(true);
			ar.setMsg("操作成功");
		} catch (Exception e) {
			ar.setStatus(false);
			ar.setMsg("操作失败");
			e.printStackTrace();
		}
		return ar.toString();
	}
	
	/**
	 * 新增或修改
	 * 
	 * @param u
	 *            操作的对象数据
	 * @return 返回操作结果
	 */
	@RequestMapping(value = "/modify")
	@ResponseBody
	public String moidifyUser(User u) {
		ActionReturn ar = new ActionReturn();
		try {
			userServ.editUser(u);
			
			ar.setStatus(true);
			ar.setMsg("操作成功");
		} catch (Exception e) {
			ar.setStatus(false);
			ar.setMsg("操作失败");
			e.printStackTrace();
		}
		return ar.toString();
	}

	/**
	 * 删除
	 * 
	 * @param ids
	 *            删除的对象数据主键
	 * @return 返回操作结果
	 */
	@RequestMapping(value = "/delete")
	@ResponseBody
	public String deleteUser(Integer[] ids) {
		ActionReturn ar = new ActionReturn();
		try {
			short status = 0;
			userServ.moidifyUserStatus(ids, status);
			
			ar.setStatus(true);
			ar.setMsg("操作成功");
		} catch (Exception e) {
			ar.setStatus(false);
			ar.setMsg("操作失败");
			e.printStackTrace();
		}
		return ar.toString();
	}

	/**
	 * 启用
	 * 
	 * @param ids
	 *            启用的对象数据主键
	 * @return 返回操作结果
	 */
	@RequestMapping(value = "/enable")
	@ResponseBody
	public String enableUser(Integer[] ids) {
		ActionReturn ar = new ActionReturn();
		try {
			short status = 1;
			userServ.moidifyUserStatus(ids, status);
			
			ar.setStatus(true);
			ar.setMsg("操作成功");
		} catch (Exception e) {
			ar.setStatus(false);
			ar.setMsg("操作失败");
			e.printStackTrace();
		}
		return ar.toString();
	}

	/**
	 * 禁用
	 * 
	 * @param ids
	 *            禁用的对象数据主键
	 * @return 返回操作结果
	 */
	@RequestMapping(value = "/disenable")
	@ResponseBody
	public String disenableUser(Integer[] ids) {
		ActionReturn ar = new ActionReturn();
		try {
			short status = 2;
			userServ.moidifyUserStatus(ids, status);
			
			ar.setStatus(true);
			ar.setMsg("操作成功");
		} catch (Exception e) {
			ar.setStatus(false);
			ar.setMsg("操作失败");
			e.printStackTrace();
		}
		return ar.toString();
	}
}
